import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import '@/util/axios.config'

// element UI
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

// 粒子动画
import Particles from 'particles.vue3'

// ResizeObserver loop limit exceeded
const debounce = (fn, delay) => {
  let timer = null
  return function () {
    let context = this
    let args = arguments
    clearTimeout(timer)
    timer = setTimeout(function () {
      fn.apply(context, args)
    }, delay)
  }
}
const _ResizeObserver = window.ResizeObserver
window.ResizeObserver = class ResizeObserver extends _ResizeObserver {
  constructor(callback) {
    callback = debounce(callback, 16)
    super(callback)
  }
}
createApp(App)
  .use(ElementPlus)
  .use(Particles)
  .use(store)
  .use(router)
  .mount('#app')
